iT邦幫忙

0

Day 41 (PHP)

  • 分享至 

  • xImage
  •  

1.while可以同時給值並判斷

會給值的原因:是因為前面都沒有宣告$row(猜測)

    $fp = @opendir($dir) or exit('Server Busy v2'); 

    if ($fp) {
         while ($row = readdir($fp)){
         }
    }

2.file System

https://www.php.net/manual/en/refs.fileprocess.file.php

1.做檔案總管在做的事情(ex:開啟)
2.檔案內容存取有關的事(開啟後使用)


3.檔案

is_dir 是否是目錄
is_file 是否是檔案
filesize 檔案大小
unlink 刪除檔案(要小心,掰就掰了.........)
trim 去除換列符號(會影響資料解析,有時候換列會看不到[眼睛有業障XD])
fwrite 寫入檔案
file() 直接讀檔
fgetss() 讀取一列,但是拿掉html標籤(爬蟲好用)

die("Server Busy") 死掉了讀不到會顯示
exit('Server Busy v2') 死掉了讀不到會顯示_V2

opendir 開啟目錄
readdir 打開目錄的條目 讀取
closedir 關閉目錄

fopen("maskdata.csv", "r") 開啟檔案orURL,"r"唯讀
若要寫入,為了安全起見,要寫入請用"a",從後面寫
https://www.php.net/manual/en/function.fopen
fgets 讀取檔案一整列
fclose 關閉檔案

filemtime()) 檔案內容被存取的時間
fileatime()) 檔案最後被讀寫的時間
date_default_timezone_set('Asia/Taipei'); 時區調整,使用亞洲/台北time

date('Y-m-d H:i:s') 轉換時間格式
https://www.php.net/manual/en/function.date

calendar 老師說好用
https://www.php.net/manual/en/book.calendar.php


4.開啟檔案opendir >> 讀取檔案readdir >> 關閉檔案closedir

    $dir = '.'
    $fp = @opendir($dir) or exit('Server Busy v2');  //opendir開啟檔案 

    if ($fp) {

        while ($row = readdir($fp)) {       //readdir 打開目錄的條目 讀取
        break;
        }
    } else {
        echo 'XX';
    }
    closedir($fp);    //關閉檔案

5.後端的危險

若有權限處理檔案,誤刪會回不來:unlink


6.PHP與JS區域變數的差異

<script>
    var a = 10;

    function test1() {
        a = 100;   
    }
    test1();
    document.write(a);  //100    與PHP不同 JS直接變成global(因為var)
</script>

7.for、if、while...只有一個敘述句可以省略{}

但是我不要這樣QQ

    for ($i = 0; $i < 7; $i++) 
        $tempId .= rand(0, 9);  //亂數0~9  .字串相加 

請習慣包起來

    for ($i = 0; $i < 7; $i++) {
        $tempId .= rand(0, 9);  //亂數0~9  .字串相加 
    }

8.字串函數 - 切割 explode

https://www.php.net/manual/en/function.explode

explode 切割字串,回傳陣列


9.開啟檔案,切割回傳陣列 file() + explode()

   $rows = file("maskdata.csv");
      foreach( $rows as $k => $row){
        $data = explode(",", $row);
        // [0]:醫事機構名稱 醫事機構地址 成人口罩剩餘數 兒童口罩剩餘數  
        if ($k == 0){
            echo '<tr>';
            echo "<th>$data[1]</th>";
            echo "<th>$data[2]</th>";
            echo "<th>$data[4]</th>";
            echo "<th>$data[5]</th>";
            echo '</tr>';
        }else{
            echo '<tr>';
            echo "<td>$data[1]</td>";
            echo "<td>$data[2]</td>";
            echo "<td>$data[4]</td>";
            echo "<td>$data[5]</td>";
            echo '</tr>';
        }

      }

10.URL爬蟲(PHP06影片 2:15) fopen() + fgets()/fgetss()

      <?php
      
      $fp = fopen('https://www.iii.org.tw/', 'rb', false, $context) or die();
      // $fp = fopen('https://www.bradchao.com/', 'r');
      
      while ($line = @fgets($fp)) {
      //fgetss()讓顯示更漂亮,Deprecated:但版本要淘汰了(記得檢視原始碼觀察)
          echo $i++ . $line . '<br />';
      }

      fclose($fp);
      ?>

12.fgets 讀取,特性是會接續跑

    $line1 = trim(@fgets($fp));       //讀取第一列
    $headers = explode(",", $line1);
    echo '<tr>';
    echo "<th>$headers[1]</th>";
    echo "<th>$headers[2]</th>";
    echo "<th>$headers[4]</th>";
    echo "<th>$headers[5]</th>";
    echo '</tr>';

    while ($line = trim(@fgets($fp))) {   //讀取第二列開始,不會從頭,因為接續跑
        $row = explode(",", $line);
        echo '<tr>';
        //記得改td
        echo "<td>$row[1]</td>";
        echo "<td>$row[2]</td>";
        echo "<td>$row[4]</td>";
        echo "<td>$row[5]</td>";
        echo '</tr>';
    }

13.寫入檔案,方式有不同

1.r+從前面寫
2.w全部清掉重寫
3.a從後面

        <?php
        $fp = fopen('test1.txt', 'a'); 
        fwrite($fp, "hello world");
        fclose($fp);
        ?>

14.創建HTML

        $fp = @fopen("dir1/{$filename}.html", 'w');  
        //dir2資料夾下 ; w 後面蓋前面 ; .html新增該類型檔案

        fwrite($fp, $content); //寫入
        fclose($fp); //關閉
        // 輸出轉導向: URL
        header("Location: dir2/{$filename}");

15.創建資料夾

file_exists 檢查有無該資料夾
mkdir創建一個資料夾

        if (!file_exists("dir2")) {  // file_exists該(dir2)資料夾有沒有存在 
            // mkdir如果沒有(dir2)就創建一個dir2; 0777 權限
            if (!mkdir("dir2", 0777)) {
        
                die("ERROR 01");
            }
        }

16.輸出轉導向 (去這)

      header("Location: dir2/{$filename}");

17.後端大漏洞(PHP06影片00:35)

別人寫網頁刪除掉自己的網頁
https://ithelp.ithome.com.tw/upload/images/20210806/20137684X6KHdDzwTg.png

該網頁會占存在資料庫(為了要顯示業面)
因此會清除掉資料庫內的網頁index.html

故html(限制網頁類別)要寫,否則有機率會被砍到檔案

      $fp = @fopen("dir1/{$filename}.html", 'w');  
      //dir2資料夾下 ; w 後面蓋前面       ;.html新增該類型檔案
      fwrite($fp, $content); //寫入
      fclose($fp); //關閉

      header("Location: dir1/{$filename}.html");

18.製作"檔案上傳"

一定要 method="post"
編碼解析 enctype="multipart/form-data"

      <form>
            <form action="brad45.php" method="post"enctype="multipart/form-data">
      </form>

$ _ FILES 接收上傳檔案

       <?php
             $upload = $_FILES['upload'];
        ?>

move_uploaded_file(來源,放這) 把檔案放在這
['tmp_name'] 來源,var_dump($upload)得知

    if ($upload['error'] == 0) {
        // upload success
        $filename = date('Ymd_His') . '.jpg';
        if (move_uploaded_file(
            $upload['tmp_name'],
            "upload/{$filename}"
        )) {
            echo 'upload success';
        } else {
            "Ooop2!";
        }
    } else {
        // upload failure
        echo "Ooop1!";
    }

19.上傳檔案的限制 更改

(1)回去開組態檔(記得備份)
brad02.php查看

(2).ini 編輯

memory_limit = 128M 記憶體限制
post_max_size = 64M 總共檔案限制
upload_max_filesize = 32M 單一檔案限制


20.畫畫

https://www.php.net/manual/en/book.image

imagecreate 做畫布
imagecolorallocate 選顏色
imagefill 塗滿滿
imagefilledrectangle 畫矩形
imagedestroy 釋放畫布


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言